import type { Raw } from 'vue';
import { EntityDto } from './entity';
import type { IAudited } from './interfaces/audited';
import type { MenuResultDto } from './menu';
import { PagedResultRequestDto } from './paged-result-request';
import type { RoleUserDto } from './role-user';

export class UserDto extends EntityDto {
    public account!: string;

    public displayName!: string;

    public sex!: number;

    public photo?: string;

    public isActive: boolean = true;

    public description?: string;

    public file?:File;

    public baseRoleUser: Array<RoleUserDto> = new Array<RoleUserDto>;
}

export class UserResultDto extends UserDto implements IAudited {
    public creatorUserId?: number;

    public creationTime!: Date;

    public lastModifierUserId?: number;

    public lastModificationTime?: Date;
}

export class UserResultRequestDto extends PagedResultRequestDto {
    public account?: string;

    public displayName?: string;
}

export class MainOutputModel {
    public userResultDto!: UserResultDto;

    public menuResultDtos: Array<MenuResultDto> = new Array<MenuResultDto>;
}

export class ChangePasswordDto {
    public oldPassword!: string;

    public newPassword!: string;

    public confirmPassword!: string;
}